<?php
declare (strict_types = 1);

namespace app\adminapi\controller;

use app\adminapi\extend\tools\excel\Excel;
use app\adminapi\extend\tools\jwt\Token;
use think\Exception;
use think\exception\ValidateException;
use think\Request;

class Goods
{
    /**
     * 显示资源列表
     * @param \app\adminapi\business\Goods $goodsBusiness
     * @return \think\response\Json|void
     * @throws \think\Exception
     */
    public function index(\app\adminapi\business\Goods $goodsBusiness)
    {
        try {
            # 默认查询10条
            $page = \request()->get('page',1);
            $limit = \request()->get('limit',10);
            $goods_name = \request()->get('goods_name');
            $goods_min_price = \request()->get('goods_min_price');
            $goods_max_price = \request()->get('goods_max_price');
            $data = $goodsBusiness->goodsList($limit,$page,$goods_name,$goods_max_price,$goods_min_price);
            return  success($data);
        }catch (ValidateException $exception) {
            return  fail($exception->getCode(),$exception->getError());
        }


    }

    /**
     * 控制器
     * @param \app\adminapi\business\Goods $goodsBusiness
     * @return mixed
     */
    public function export(\app\adminapi\business\Goods $goodsBusiness){
        return $goodsBusiness->export();
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        try {
            $params = \request()->all();
            //参数数组参考：(部分省略)
//            请求=》 中间件=》控制器=》业务逻辑层=》 模型
            $params['goods_name'] = trim($params['goods_name']);
            # 参数验证
            validate(\app\adminapi\validate\Goods::class)->check($params);
            # 验证相册 图片是否存在
            foreach ($params['goods_images'] as $key=> $goods_image) {
//                file_exists() 判断文件是否存在
//                判断是否是个文件 is_file
                if (!file_exists($goods_image)) {
                    unset($params['goods_images'][$key]);//删除数组中的空置
                }
            }
            if (count($params['goods_logo']) == 0) {
                return  fail('2001','相册不能为空');
            }
            # 验证规格信息、自己实现
            # 判断goods_logo 是否真实有效
            # 判断文件是否存在、存在是有效、不存在是无效 file_exist
             if(!file_exists($params['goods_logo'])) {
                 return  fail(2001,'图片logo不存在');
             }
            # 不在控制器里面添加 、在业务逻辑层、添加
            \app\adminapi\business\Goods::addGoods($params);
        }catch (ValidateException $exception) {
            // 验证失败 输出错误信息
            return fail(2001,$exception->getError());
        }

    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
        try {
            if (!is_numeric($id)) {
                # 抛出异常
                throw new Exception("商品id只能是数子");
            }
            $data = \app\adminapi\business\Goods::getInfo($id);
            return success($data);
        }catch (Exception $exception) {
            // 验证失败 输出错误信息
            return fail(2001,$exception->getMessage());
        }
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //

    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {

        try {
            if (!is_numeric($id)) {
                return  fail();
            }
           $data = \app\adminapi\business\Goods::deleteGoods($id);
            if ($data) {
                return success();
            } else {
                return  fail();
            }
        }catch (\Exception $exception) {
            // 验证失败 输出错误信息
            return fail(2001,$exception->getMessage());
        }
        //
    }

    public function addGoods(){
        $name = \request()->get('name'); # 单个变量进行过滤
        # 表单数据 入库
//        。。。。
        # 展示
        # 创建配置的对象
        $config = HTMLPurifier_Config::createDefault();
        # h1 h2 span 设置过滤规则
        $config->set('HTML.Allowed', 'p,a');
        # 创建过滤对象
        $purifier = new HTMLPurifier($config);
        # 进行过滤
        $clean_html = $purifier->purify($name);
//        $name = htmlspecialchars($name);
        echo $clean_html;
    }

    public function addCategory(){
         # 怎么用
        $name = \request()->get('name','','remove_xss'); # 单个变量进行过滤
        # 表单数据 入库
//        。。。。
        # 展示
        # 创建配置的对象
        $config = HTMLPurifier_Config::createDefault();
        # h1 h2 span 设置过滤规则
        $config->set('HTML.Allowed', 'p,a');
        # 创建过滤对象
        $purifier = new HTMLPurifier($config);
        # 进行过滤
        $clean_html = $purifier->purify($name);
//        $name = htmlspecialchars($name);
        echo $clean_html;
    }
}
